/**
 * WGT热更新统一导出
 * 聚合所有模块，保持与原 wgt-hot-update.js 的 API 兼容
 */

import versionManager from './version.js'
import remoteManager from './remote.js'
import downloadManager from './download.js'
import installManager from './install.js'

class WgtHotUpdate {
  constructor() {
    this.currentVersion = ''
    this.giteeOwner = ''
    this.giteeRepo = ''
    this.giteeToken = ''
    this.updateInfoFile = 'moe_web/update-info.json'
    this.wgtPackageName = '__UNI__E11DC15.wgt'
  }

  /**
   * 初始化配置（异步方法）
   * 确保版本信息已从系统获取并保存到本地存储
   */
  async init() {
    try {
      // 确保版本已初始化（如果本地存储没有，则从系统获取）
      this.currentVersion = await versionManager.ensureVersionInitialized()
      console.log('[WgtHotUpdate] 系统初始化完成，当前版本:', this.currentVersion)
    } catch (error) {
      console.error('[WgtHotUpdate] 初始化失败:', error)
      this.currentVersion = versionManager.getCurrentVersion()
    }
  }

  /**
   * 设置Gitee配置
   */
  setGiteeConfig(owner, repo, token = '') {
    this.giteeOwner = owner
    this.giteeRepo = repo
    this.giteeToken = token
    
    // 同步到远程管理器
    remoteManager.setGiteeConfig(owner, repo, token)
    
    console.log('Gitee配置已更新:', { owner, repo })
  }

  /**
   * 检查更新（核心API）
   */
  async checkForUpdate() {
    return await remoteManager.checkForUpdate()
  }

  /**
   * 下载并应用更新（核心API）
   */
  async downloadAndApplyUpdate(downloadUrl, updateInfo, onProgress) {
    try {
      console.log('===== 开始下载并应用更新 =====')
      console.log('下载URL:', downloadUrl)
      console.log('更新信息:', updateInfo)
      
      // 下载WGT包
      const wgtPath = await downloadManager.downloadZip(downloadUrl, onProgress)
      console.log('下载完成，文件路径:', wgtPath)
      
      // 应用更新
      await installManager.applyUpdate(wgtPath, onProgress)
      console.log('更新应用成功')
      
      // 更新版本信息
      await versionManager.updateVersionInfo(updateInfo.version, updateInfo)
      
      return {
        success: true,
        message: '更新成功，重启应用后生效'
      }
    } catch (error) {
      console.error('下载并应用更新失败:', error)
      throw error
    }
  }

  /**
   * 重启应用
   */
  restartApp() {
    installManager.restartApp()
  }

  // ==================== 以下是兼容性API ====================

  /**
   * 获取当前版本
   */
  getCurrentVersion() {
    return versionManager.getCurrentVersion()
  }

  /**
   * 比较版本号
   */
  compareVersions(currentVersion, latestVersion) {
    return versionManager.compareVersions(currentVersion, latestVersion)
  }

  /**
   * 获取本地版本信息
   */
  getLocalUpdateInfo() {
    return versionManager.getLocalUpdateInfo()
  }

  /**
   * 更新版本信息
   */
  async updateVersionInfo(version, updateInfo) {
    return await versionManager.updateVersionInfo(version, updateInfo)
  }

  /**
   * 获取远程版本信息
   */
  async getRemoteUpdateInfo() {
    return await remoteManager.getRemoteUpdateInfo()
  }

  /**
   * 下载文件
   */
  async downloadZip(downloadUrl, onProgress) {
    return await downloadManager.downloadZip(downloadUrl, onProgress)
  }

  /**
   * 应用更新
   */
  async applyUpdate(wgtPath, onProgress) {
    return await installManager.applyUpdate(wgtPath, onProgress)
  }

  /**
   * 备份版本
   */
  async backupCurrentFiles() {
    return await versionManager.backupVersion()
  }

  /**
   * 回滚更新
   */
  async rollbackUpdate() {
    return await versionManager.rollbackVersion()
  }

  /**
   * 获取下载URL
   */
  getDownloadUrl() {
    return remoteManager.getDownloadUrl()
  }

  /**
   * 获取备用下载URL
   */
  getFallbackDownloadUrl(originalUrl) {
    return downloadManager.getFallbackDownloadUrl(originalUrl)
  }

  /**
   * 清理临时文件
   */
  async cleanupTempFiles(zipPath, extractPath) {
    return await installManager.cleanupTempFiles(zipPath, extractPath)
  }
}

// 导出单例
const wgtHotUpdate = new WgtHotUpdate()

// 自动初始化
wgtHotUpdate.init()

export default wgtHotUpdate

// 同时导出各个模块（供高级用户使用）
export {
  versionManager,
  remoteManager,
  downloadManager,
  installManager
} 